home *** CD-ROM | disk | FTP | other *** search
/ System Booster / System Booster.iso / Archivers / SignArch / AddSum.rexx < prev    next >
OS/2 REXX Batch file  |  1996-09-26  |  3KB  |  152 lines

  1. /* .key ARCHIVE/A,TEMPDIR */
  2.  
  3. /*
  4.  *
  5.  * Generic argument parsing within ARexx. Fixes some problems within the
  6.  * RX program, as it won't handle "'s. The results will be put in argv,
  7.  * argc will be the number of arguments.
  8.  *
  9.  */
  10.  
  11.  
  12. /********************  START OF COMMAND LINE PARSING  ********************/
  13.  
  14. Parse Arg CmdLine
  15.  
  16. argv = ""
  17.  
  18. argc = 1
  19.  
  20. /* First, split the command into its argvs */
  21.  
  22. Do While CmdLine ~= ""
  23.     CmdLine = Strip(CmdLine)
  24.  
  25.     If Left(CmdLine, 1) = '"' Then Do
  26.         CmdLine = Strip(CmdLine, 'B', '"')
  27.         EndPos = Index(CmdLine, '"')
  28.         StripChar = '"'
  29.     End
  30.     Else Do
  31.         EndPos = Index(CmdLine, ' ')
  32.         StripChar = ' '
  33.     End
  34.  
  35.     If EndPos = 0 Then EndPos = Length(CmdLine)
  36.  
  37.     argv.argc = Strip(SubStr(CmdLine, 1, EndPos), 'B', StripChar)
  38.  
  39.     argc = argc + 1
  40.  
  41.     CmdLine = Right(CmdLine, Length(CmdLine) - EndPos)
  42. End
  43.  
  44. argc = argc - 1
  45.  
  46. Drop EndPos
  47. Drop CmdLine
  48. Drop StripChar
  49.  
  50. /*********************  END OF COMMAND LINE PARSING  *********************/
  51.  
  52. /* Read environment file */
  53.  
  54. Options Failat 6
  55.  
  56. rexxscript = "REXX:SignArch.rexx"
  57. lhacommand = "LhA"
  58.  
  59. If Open('pgpenv', "ENV:SignArchGUIPaths", 'R') Then Do
  60.     Do While Eof('pgpenv') = 0
  61.         tmpline = ReadLn('pgpenv')
  62.         If Left(Upper(tmpline), 4) = "SCR:" Then rexxscript = Right(tmpline, Length(tmpline)-4)
  63.         If Left(Upper(tmpline), 4) = "LHA:" Then rexxscript = Right(tmpline, Length(tmpline)-4)
  64.     End
  65.     Close('pgpenv')
  66. End
  67.  
  68.  
  69. /* Init variables */
  70.  
  71.  
  72. Select
  73.     When argc = 1 Then TempDir = "T:"
  74.     When argc = 2 Then TempDir = argv.2
  75.     Otherwise Do
  76.         Say "Illegal number of parameters!"
  77.         Exit
  78.     End
  79. End
  80.  
  81. Archive = argv.1
  82.  
  83. LastDot = 0
  84. LastSlash = 0
  85. LastColon = 0
  86.  
  87. TmpPos = 0
  88.  
  89. Do Until TmpPos = 0
  90.     TmpPos = Index(Archive, ".", TmpPos + 1)
  91.     If TmpPos ~= 0 Then LastDot = TmpPos
  92. End
  93.  
  94. TmpPos = 0
  95.  
  96. Do Until TmpPos = 0
  97.     TmpPos = Index(Archive, "/", TmpPos + 1)
  98.     If TmpPos ~= 0 Then LastSlash = TmpPos
  99. End
  100.  
  101. TmpPos = 0
  102.  
  103. Do Until TmpPos = 0
  104.     TmpPos = Index(Archive, ":", TmpPos + 1)
  105.     If TmpPos ~= 0 Then LastColon = TmpPos
  106. End
  107.  
  108. StartBase = Max(LastColon, LastSlash)
  109.  
  110.  
  111. If StartBase < LastDot Then Do
  112.     ArcName = SubStr(Archive, StartBase + 1, LastDot - StartBase - 1)
  113. End
  114. Else Do
  115.     ArcName = SubStr(Archive, StartBase + 1, Length(Archive) - StartBase - 1)
  116. End
  117.  
  118. If Right(TempDir, 1) ~= '/' & Right(TempDir, 1) ~= ':' Then Tempdir = TempDir||'/'
  119.  
  120. ArcDir = TempDir||ArcName
  121.  
  122. If Exists(ArcDir) Then Address Command 'Delete "'||ArcDir||'" ALL'
  123. Address Command 'MakeDir "'||ArcDir||'"'
  124.  
  125. If Right(ArcDir, 1) ~= '/' & Right(ArcDir, 1) ~= ':' Then ArcDir = ArcDir||'/'
  126.  
  127. Address Command lhacommand||' e "'||Archive||'" "'||ArcDir||'"'
  128.  
  129. /* Create the filelist file */
  130.  
  131. ArcFiles = TempDir||Compress(ArcName)||".fls"
  132.  
  133. Open('filelist', ArcFiles, 'W')
  134.  
  135. WriteLn('filelist', "!!FILELIST!!")
  136. WriteLn('filelist', "***ROOTDIR "||ArcDir)
  137. WriteLn('filelist', "***ARCHIVE "||Archive)
  138. WriteLn('filelist', "***SUMFILE "||ArcDir||ArcName||".sum")
  139. WriteLn('filelist', "***NOWILDS")
  140. WriteLn('filelist', "***SUMONLY")
  141. WriteLn('filelist', "***LASTOPT")
  142. Close('filelist')
  143.  
  144. Address Command 'List >>"'||ArcFiles||'" "'||ArcDir||'" FILES ALL LFORMAT %f%s'
  145.  
  146. Address Command 'RX '||rexxscript||' '||ArcFiles
  147.  
  148. If rc = 0 Then Address Command lhacommand||' a "'||Archive||'" "'ArcDir||ArcName||'.sum"'
  149.  
  150. Address Command 'Delete >nil: "'||ArcFiles||'"'
  151. Address Command 'Delete >nil: "'||ArcDir||'" ALL'
  152.